package servlets;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import parser.ParserXML;
import entitiesdto.ArticuloDTO;
import entitiesdto.CantidadMateriaPrimaDTO;
import entitiesdto.MateriaPrimaDTO;

public class NuevoArticuloSVL extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
	static final long serialVersionUID = 1L;

	public NuevoArticuloSVL() {
		super();
	}   	

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doPost(request,response);
	}  	

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
	{

		String action = (String) request.getParameter("action");
		
		if (action != null && action.equals("LoadXML")){
            this.leerArchivo(request,response);
		}
		
		if (action != null && action.equals("Agregar")){
			this.agregarMateriaPrima(request,response);
		}		
			
//			if (articulo != null) {
//				try {
//					FabricaBusinessDelegate.getInstance().ingresarNuevoArticulo(articulo);
//				} catch (NamingException e) {
//					e.printStackTrace();
//				}
//			}
		
		}
		
		public void agregarMateriaPrima (HttpServletRequest request, HttpServletResponse response)
		{
			HttpSession session = request.getSession(true);
			
			String materia = request.getParameter("selectMaterias");
			String cantidad = request.getParameter("cantidadMateriaPrima");
			
			List<CantidadMateriaPrimaDTO> materiascargadas = new ArrayList<CantidadMateriaPrimaDTO> ();
			
			MateriaPrimaDTO mat1 = new MateriaPrimaDTO () ;
			MateriaPrimaDTO mat2 = new MateriaPrimaDTO () ;
			MateriaPrimaDTO mat3 = new MateriaPrimaDTO () ;
			
			CantidadMateriaPrimaDTO cmp1 = new CantidadMateriaPrimaDTO();
			CantidadMateriaPrimaDTO cmp2 = new CantidadMateriaPrimaDTO();
			CantidadMateriaPrimaDTO cmp3 = new CantidadMateriaPrimaDTO();
			
			mat1.setRef("1");mat2.setRef("2");mat3.setRef("3");
			mat1.setDescripcion("Algodon");mat2.setDescripcion("Botones");mat3.setDescripcion("Polar");
			
			cmp1.setMateriaPrima(mat1);
			cmp2.setMateriaPrima(mat2);
			cmp2.setMateriaPrima(mat3);

			cmp1.setCantidad(Float.parseFloat(cantidad));
			cmp2.setCantidad(Float.parseFloat(cantidad));
			cmp3.setCantidad(Float.parseFloat(cantidad));
			
			materiascargadas.add(cmp1);
			materiascargadas.add(cmp2);
			materiascargadas.add(cmp3);
			
			session.setAttribute("materiasPrimasCargadas", materiascargadas);
			
			RequestDispatcher dispatcher = request.getRequestDispatcher("/nuevoArticulo.jsp");
			
			try {
				dispatcher.forward(request, response);
			} catch (ServletException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		
		public void leerArchivo (HttpServletRequest request, HttpServletResponse response)
		{
			HttpSession session = request.getSession(true);
			
			String path = request.getParameter("patharchivo");
			ArticuloDTO articulo = null;
			
			if (path != null) {
				ParserXML parser = new ParserXML();
				File archivo = new File(path);
				articulo = parser.getArticuloDTO(archivo);
			}
			
			session.setAttribute("articuloParseado", articulo);
			
			List<MateriaPrimaDTO> lista = new ArrayList<MateriaPrimaDTO>();
			
			// ACA FALTA QUE LO TRAIGA EL ENTITY MANAGER
			MateriaPrimaDTO mat1 = new MateriaPrimaDTO () ;
			MateriaPrimaDTO mat2 = new MateriaPrimaDTO () ;
			MateriaPrimaDTO mat3 = new MateriaPrimaDTO () ;
			
			mat1.setRef("1");mat2.setRef("2");mat3.setRef("3");
			mat1.setDescripcion("Algodon");mat2.setDescripcion("Botones");mat3.setDescripcion("Polar");
			
			lista.add(mat1);lista.add(mat2);lista.add(mat3);
			
//			try {
//				lista = FabricaBusinessDelegate.getInstance().getMateriasPrimas();
//			} catch (NamingException e1) {
//				e1.printStackTrace();
//			}
			
			session.setAttribute("listameriasprimas", lista);
			
			RequestDispatcher dispatcher = request.getRequestDispatcher("/nuevoArticulo.jsp");
			
			try {
				dispatcher.forward(request, response);
			} catch (ServletException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
}
		